package com.wgy.Day28异常.异常的概念和体系;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by pc on 2020/11/25 23:05
 * Description: LearningJava
 */
/*
异常Exception

概念: 指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止
     并不是语法的错误,语法错了,编译不会通过,不会产生字节码文件,根本不会运行

在java中异常本身是一个类,产生异常就是创建异常对象并抛出一个异常对象,java处理异常的方式是中断处理.

异常体系:异常的根类:java.lang.Throwable 其下有两个子类:java.lang.Error和java.lang.Exception
        Error:严重错误,无法通过处理的错误,只能事先避免或者必须修改源代码程序才能继续执行
        Exception:编译期异常,进行编译(写代码)java程序出现的问题  由于使用不当,可以避免的 其下有一个子类RuntimeException
        RuntimeException:运行期异常,java程序运行过程中出现的问题

异常处理的五个关键字: try...catch(捕获异常),finally,throw(抛出异常),throws(声明异常)
*/
public class Demo01Exception {
    public static void main(String[] args)/* throws ParseException*/ {
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //用来格式化日期
        Date date=null;
        try {
            date = sdf.parse("1991-09-09");//ParseException: Unparseable date: "1991-0909"
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println(date);  //Mon Sep 09 00:00:00 CDT 1991


        int[] array = {1, 2, 3};
        System.out.println(array[0]);
     //   System.out.println(array[3]); //ArrayIndexOutOfBoundsException  后续的代码不会执行

        try {
            // 可能会出现异常的代码
            System.out.println(array[3]);
        } catch (Exception e) {
            //异常的处理逻辑
            e.printStackTrace();
        }
        System.out.println("后续代码"); //ArrayIndexOutOfBoundsException  但是后续的代码会执行

        //Error
        // int[] arr=new int[1024*1024*1024];
        // OutOfMemoryError: Java heap space 内存溢出的错误,创建的数组长度太大,超出了JVM分配的内存  后续的代码1不会被执行
        int[] arr=new int[1024*1024];       //只有修改代码后,后续的代码1才会被执行
        System.out.println("后续代码1");

    }
}
